home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / misc / emu / amiSPIMsrc.lha / windows.c < prev    next >
C/C++ Source or Header  |  1994-01-17  |  8KB  |  265 lines

  1. /* SPIM S20 MIPS simulator.
  2.    X interface to SPIM
  3.    Copyright (C) 1990-1994 by James Larus (larus@cs.wisc.edu).
  4.    ALL RIGHTS RESERVED.
  5.  
  6.    SPIM is distributed under the following conditions:
  7.  
  8.      You may make copies of SPIM for your own use and modify those copies.
  9.  
  10.      All copies of SPIM must retain my name and copyright notice.
  11.  
  12.      You may not sell SPIM or distributed SPIM in conjunction with a
  13.      commerical product or service without the expressed written consent of
  14.      James Larus.
  15.  
  16.    THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  17.    IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  18.    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  19.    PURPOSE. */
  20.  
  21.  
  22. /* $Header: /home/primost/larus/Software/SPIM/RCS/windows.c,v 3.10 1994/01/18 03:21:45 larus Exp larus $
  23.  */
  24.  
  25.  
  26. #include <X11/Intrinsic.h>
  27. #include <X11/StringDefs.h>
  28. #include <X11/Xaw/Cardinals.h>
  29. #include <X11/Xaw/Paned.h>
  30. #include <X11/Xaw/AsciiText.h>
  31. #include <X11/Xaw/Box.h>
  32. #include <X11/Xaw/Label.h>
  33.  
  34. #include <stdio.h>
  35.  
  36. #include "spim.h"
  37. #include "spim-utils.h"
  38. #include "buttons.h"
  39. #include "xspim.h"
  40. #include "windows.h"
  41.  
  42.  
  43. /* Exported variables: */
  44.  
  45. Widget register_window, text_window, data_window;
  46.  
  47.  
  48. /* Internal functions: */
  49.  
  50. #ifdef __STDC__
  51. static void create_command_panel (Widget parent, Dimension app_width,
  52.                   Dimension button_height,
  53.                   Dimension command_hspace,
  54.                   Dimension command_vspace,
  55.                   Dimension command_height);
  56. static void create_data_window (Widget parent, Dimension segment_height);
  57. static void create_display_window (Widget parent, Dimension display_height);
  58. static void create_reg_window (Widget parent, Dimension reg_min_height,
  59.                    Dimension reg_max_height);
  60. static void create_text_window (Widget parent, Dimension segment_height);
  61. #else
  62. static void create_command_panel ();
  63. static void create_data_window ();
  64. static void create_display_window ();
  65. static void create_reg_window ();
  66. static void create_text_window ();
  67. #endif
  68.  
  69.  
  70.  
  71. #ifdef __STDC__
  72. static void
  73. create_reg_window (Widget parent, Dimension reg_min_height,
  74.            Dimension reg_max_height)
  75. #else
  76. static void
  77. create_reg_window (parent, reg_min_height, reg_max_height)
  78.      Widget parent;
  79.      Dimension reg_min_height, reg_max_height;
  80. #endif
  81. {
  82.   Arg args[15];
  83.   Cardinal n = 0;
  84.  
  85.   XtSetArg (args[n], XtNtype, XawAsciiString); n++;
  86.   XtSetArg (args[n], XtNeditType, XawtextRead); n++;
  87.   XtSetArg (args[n], XtNpreferredPaneSize, reg_min_height); n++;
  88.   XtSetArg (args[n], XtNmin, reg_min_height); n++;
  89.   XtSetArg (args[n], XtNmax, reg_max_height); n++;
  90.   XtSetArg (args[n], XtNresize, "width"); n++;
  91.   XtSetArg (args[n], XtNwrap, "line"); n++;
  92.   XtSetArg (args[n], XtNstring, ""); n++;
  93.   XtSetArg (args[n], XtNlength, 0); n++;
  94.   XtSetArg (args[n], XtNuseStringInPlace, True); n++;
  95.   XtSetArg (args[n], XtNdisplayCaret, False); n++;
  96.   register_window = XtCreateManagedWidget ("register", asciiTextWidgetClass,
  97.                        parent, args, n);
  98. }
  99.  
  100.  
  101. #ifdef __STDC__
  102. static void
  103. create_command_panel (Widget parent, Dimension app_width,
  104.               Dimension button_height, Dimension command_hspace,
  105.               Dimension command_vspace, Dimension command_height)
  106. #else
  107. static void
  108. create_command_panel (parent, app_width, button_height, command_hspace,
  109.             command_vspace, command_height)
  110.      Widget parent;
  111.      Dimension app_width, button_height, command_hspace, command_vspace;
  112.      Dimension command_height;
  113. #endif
  114. {
  115.   Widget panel;
  116.   Arg args[10];
  117.   Cardinal n = 0;
  118.  
  119.   XtSetArg (args[n], XtNwidth, app_width); n++;
  120.   XtSetArg (args[n], XtNmin, command_height); n++;
  121.   XtSetArg (args[n], XtNmax, command_height); n++;
  122.   XtSetArg (args[n], XtNpreferredPaneSize, 2*button_height + 3 * command_vspace);
  123.   n++;
  124.   XtSetArg (args[n], XtNhSpace, command_hspace); n++;
  125.   XtSetArg (args[n], XtNvSpace, command_vspace); n++;
  126.   XtSetArg (args[n], XtNallowResize, False); n++;
  127.   panel = XtCreateManagedWidget ("panel", boxWidgetClass, parent, args, n);
  128.  
  129.   create_buttons (panel);
  130. }
  131.  
  132.  
  133. #ifdef __STDC__
  134. static void
  135. create_text_window (Widget parent, Dimension segment_height)
  136. #else
  137. static void
  138. create_text_window (parent, segment_height)
  139.      Widget parent;
  140.      Dimension segment_height;
  141. #endif
  142. {
  143.   Arg args[15];
  144.   Cardinal n = 0;
  145.  
  146.   XtSetArg (args[n], XtNallowResize, False); n++;
  147.   XtSetArg (args[n], XtNshowGrip, False); n++;
  148.   XtSetArg (args[n], XtNresize, False); n++;
  149.   XtSetArg (args[n], XtNmin, TEXTHEIGHT); n++;
  150.   XtSetArg (args[n], XtNlabel, "Text Segments"); n++;
  151.   XtSetArg (args[n], XtNborderWidth, 0); n++;
  152.   XtSetArg (args[n], XtNuseStringInPlace, True); n++;
  153.   XtCreateManagedWidget ("TextSegmentLabel", labelWidgetClass, parent,
  154.              args, n);
  155.  
  156.   n = 0;
  157.   XtSetArg (args[n], XtNtype, XawAsciiString); n++;
  158. /*  XtSetArg (args[n], XtNeditType, XawtextRead); n++;*/
  159.   XtSetArg (args[n], XtNpreferredPaneSize, segment_height); n++;
  160.   XtSetArg (args[n], XtNstring, ""); n++;
  161.   XtSetArg (args[n], XtNborderWidth, 0); n++;
  162.   XtSetArg (args[n], XtNdisplayCaret, True); n++;
  163.   XtSetArg (args[n], XtNdisplayCaret, False); n++;
  164.   XtSetArg (args[n], XtNscrollVertical, XawtextScrollWhenNeeded); n++;
  165.   text_window = XtCreateManagedWidget ("file", asciiTextWidgetClass, parent,
  166.                        args, n);
  167. }
  168.  
  169.  
  170. #ifdef __STDC__
  171. static void
  172. create_data_window (Widget parent, Dimension segment_height)
  173. #else
  174. static void
  175. create_data_window (parent, segment_height)
  176.      Widget parent;
  177.      Dimension segment_height;
  178. #endif
  179. {
  180.   Arg args[15];
  181.   Cardinal n = 0;
  182.  
  183.   XtSetArg (args[n], XtNallowResize, False); n++;
  184.   XtSetArg (args[n], XtNshowGrip, False); n++;
  185.   XtSetArg (args[n], XtNresize, False); n++;
  186.   XtSetArg (args[n], XtNmin, TEXTHEIGHT); n++;
  187.   XtSetArg (args[n], XtNlabel, "Data Segments"); n++;
  188.   XtSetArg (args[n], XtNborderWidth, 0); n++;
  189.   XtSetArg (args[n], XtNuseStringInPlace, True); n++;
  190.   XtSetArg (args[n], XtNdisplayCaret, False); n++;
  191.   XtCreateManagedWidget ("DataSegmentLabel", labelWidgetClass, parent,
  192.              args, n);
  193.  
  194.   n = 0;
  195.   XtSetArg (args[n], XtNtype, XawAsciiString); n++;
  196.   XtSetArg (args[n], XtNeditType, XawtextRead); n++;
  197.   XtSetArg (args[n], XtNpreferredPaneSize, segment_height); n++;
  198.   XtSetArg (args[n], XtNstring, ""); n++;
  199.   XtSetArg (args[n], XtNborderWidth, 0); n++;
  200.   XtSetArg (args[n], XtNdisplayCaret, False); n++;
  201.   XtSetArg (args[n], XtNscrollVertical, XawtextScrollWhenNeeded); n++;
  202.   data_window = XtCreateManagedWidget ("file", asciiTextWidgetClass, parent,
  203.                        args, n);
  204. }
  205.  
  206.  
  207. #ifdef __STDC__
  208. static void
  209. create_display_window (Widget parent, Dimension display_height)
  210. #else
  211. static void
  212. create_display_window (parent, display_height)
  213.      Widget parent;
  214.      Dimension display_height;
  215. #endif
  216. {
  217.   Arg args[15];
  218.   Cardinal n = 0;
  219.  
  220.   XtSetArg (args[n], XtNeditType, XawtextEdit); n++;
  221.   XtSetArg (args[n], XtNpreferredPaneSize, display_height); n++;
  222.   XtSetArg (args[n], XtNborderWidth, 0); n++;
  223.   XtSetArg (args[n], XtNdisplayCaret, False); n++;
  224.   XtSetArg (args[n], XtNdisplayNonprinting, False); n++;
  225.   XtSetArg (args[n], XtNscrollVertical, XawtextScrollWhenNeeded); n++;
  226.   XtSetArg (args[n], XtNwrap, "line"); n++;
  227.   message = XtCreateManagedWidget ("display", asciiTextWidgetClass, parent,
  228.                    args, n);
  229.   message_out = (int) message;
  230. }
  231.  
  232.  
  233. #ifdef __STDC__
  234. void
  235. create_sub_windows (Widget parent, Dimension app_width,
  236.             Dimension reg_min_height, Dimension reg_max_height,
  237.             Dimension command_height, Dimension command_hspace,
  238.             Dimension command_vspace, Dimension button_height,
  239.             Dimension segment_height, Dimension display_height)
  240. #else
  241. void
  242. create_sub_windows (parent, app_width, reg_min_height, reg_max_height,
  243.             command_height, command_hspace, command_vspace,
  244.             button_height, segment_height, display_height)
  245.      Widget parent;
  246.      Dimension app_width, reg_min_height, reg_max_height;
  247.      Dimension command_height, command_hspace, command_vspace;
  248.      Dimension button_height, segment_height, display_height;
  249. #endif
  250. {
  251.   Widget pane;
  252.   Arg args[10];
  253.   Cardinal n = 0;
  254.  
  255.   XtSetArg (args[n], XtNwidth, app_width); n++;
  256.   pane = XtCreateManagedWidget ("pane", panedWidgetClass, parent, args, n);
  257.  
  258.   create_reg_window (pane, reg_min_height, reg_max_height);
  259.   create_command_panel (pane, app_width, button_height, command_hspace,
  260.             command_vspace, command_height);
  261.   create_text_window (pane, segment_height);
  262.   create_data_window (pane, segment_height);
  263.   create_display_window (pane, display_height);
  264. }
  265.